package models

import "time"

// 内存对齐概念, 相同类型的放到一起定义， 可以更好地定义，内存开销更小
type Post struct {
	ID int64 `json:"id,string" gorm:"column:post_id"` // 帖子id
	// 避免传到前端json，js数字失真（溢出），这里也加上 string， 转换为string 传给前端
	AuthorID    int64     `json:"author_id,string" gorm:"column:author_id"`                   // 作者id
	CommunityID int64     `json:"community_id" gorm:"column:community_id" binding:"required"` // 社区id
	Status      int32     `json:"status" gorm:"column:status"`                                // 帖子状态
	Title       string    `json:"title" gorm:"column:title" binding:"required"`               // 帖子标题
	Content     string    `json:"content" gorm:"column:content" binding:"required"`           // 帖子内容
	CreateTime  time.Time `json:"create_time" gorm:"column:create_time"`                      // 帖子创建时间
}

// ApiPostDetail 帖子详情接口的结构体
// 返回帖子和作者的相关信息，需要嵌套
type ApiPostDetail struct {
	AuthorName       string             `json:"author_name"` // 作者
	VoteNum          int64              `json:"vote_num"`    // 投票数
	*Post                               // 嵌入帖子结构体
	*CommunityDetail `json:"community"` // 嵌入社区信息
}
